www.gusucode.com > 基于Visual C++高级界面特效制作百例源码程序 > 基于Visual C++高级界面特效制作百例源码程序/code/char08/ToolbarMenuDemoMDI/ToolbarMenuDemoMDIView.cpp
// ToolbarMenuDemoMDIView.cpp : implementation of the CToolbarMenuDemoMDIView class // #include "stdafx.h" #include "ToolbarMenuDemoMDI.h" #include "ToolbarMenuDemoMDIDoc.h" #include "ToolbarMenuDemoMDIView.h" // COOLMENU SUPPORT #include "MenuSpawn.h" // END COOLMENU SUPPORT #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CToolbarMenuDemoMDIView IMPLEMENT_DYNCREATE(CToolbarMenuDemoMDIView, CEditView) BEGIN_MESSAGE_MAP(CToolbarMenuDemoMDIView, CEditView) //{{AFX_MSG_MAP(CToolbarMenuDemoMDIView) ON_WM_RBUTTONDOWN() ON_WM_MENUCHAR() ON_WM_DRAWITEM() ON_WM_MEASUREITEM() //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CToolbarMenuDemoMDIView construction/destruction CToolbarMenuDemoMDIView::CToolbarMenuDemoMDIView() { // COOLMENU SUPPORT pSpawn = NULL; // END COOLMENU SUPPORT } CToolbarMenuDemoMDIView::~CToolbarMenuDemoMDIView() { // COOLMENU SUPPORT if (pSpawn) delete pSpawn; // END COOLMENU SUPPORT } BOOL CToolbarMenuDemoMDIView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs BOOL bPreCreated = CEditView::PreCreateWindow(cs); cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping return bPreCreated; } ///////////////////////////////////////////////////////////////////////////// // CToolbarMenuDemoMDIView drawing void CToolbarMenuDemoMDIView::OnDraw(CDC* pDC) { CToolbarMenuDemoMDIDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here } ///////////////////////////////////////////////////////////////////////////// // CToolbarMenuDemoMDIView printing BOOL CToolbarMenuDemoMDIView::OnPreparePrinting(CPrintInfo* pInfo) { // default CEditView preparation return CEditView::OnPreparePrinting(pInfo); } void CToolbarMenuDemoMDIView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo) { // Default CEditView begin printing. CEditView::OnBeginPrinting(pDC, pInfo); } void CToolbarMenuDemoMDIView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo) { // Default CEditView end printing CEditView::OnEndPrinting(pDC, pInfo); } ///////////////////////////////////////////////////////////////////////////// // CToolbarMenuDemoMDIView diagnostics #ifdef _DEBUG void CToolbarMenuDemoMDIView::AssertValid() const { CEditView::AssertValid(); } void CToolbarMenuDemoMDIView::Dump(CDumpContext& dc) const { CEditView::Dump(dc); } CToolbarMenuDemoMDIDoc* CToolbarMenuDemoMDIView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CToolbarMenuDemoMDIDoc))); return (CToolbarMenuDemoMDIDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CToolbarMenuDemoMDIView message handlers // COOLMENU SUPPORT void CToolbarMenuDemoMDIView::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { if (!pSpawn || !pSpawn->DrawItem(lpDrawItemStruct)) CEditView::OnDrawItem(nIDCtl, lpDrawItemStruct); } void CToolbarMenuDemoMDIView::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) { if (!pSpawn || !pSpawn->MeasureItem(lpMeasureItemStruct)) CEditView::OnMeasureItem(nIDCtl, lpMeasureItemStruct); } // END COOLMENU SUPPORT void CToolbarMenuDemoMDIView::OnRButtonDown(UINT nFlags, CPoint point) { // COOLMENU SUPPORT if (pSpawn) delete pSpawn; pSpawn = new CMenuSpawn(true); ASSERT(pSpawn); pSpawn->LoadToolBarResource(IDR_MAINFRAME); CMenu pPopupMenu; VERIFY(pPopupMenu.LoadMenu(IDR_TOOLBATYPE)); CMenu * pPopup = pPopupMenu.GetSubMenu(1); // Let's get the Modify menu ASSERT(pPopup != NULL); pSpawn->RemapMenu(pPopup); // This is a function which uses the standard MFC command enabling mechanism // to enable and disable the items of the popup menu pSpawn->EnableMenuItems(pPopup, this); /* CString csText; pSpawn->GetMenuItemText(csText, pPopup, 0, true); afxDump << csText << "\n";*/ CPoint mpt; ::GetCursorPos(&mpt); pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, mpt.x, mpt.y, this); pPopupMenu.DestroyMenu(); delete pSpawn; pSpawn = NULL; // END COOLMENU SUPPORT // CEditView::OnRButtonDown(nFlags, point); } // COOLMENU SUPPORT LRESULT CToolbarMenuDemoMDIView::OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu) { LRESULT lRes = CEditView::OnMenuChar(nChar, nFlags, pMenu); if (HIWORD(lRes) != 2) pSpawn->FindKeyboardShortcut(nChar, nFlags, pMenu, lRes); return lRes; } // END COOLMENU SUPPORT